Divide and Conquer Algorithm